home *** CD-ROM | disk | FTP | other *** search
/ Halting the Hacker - A P…uide to Computer Security / Halting the Hacker - A Practical Guide to Computer Security.iso / rfc / rfc1502.txt < prev    next >
Text File  |  1997-04-01  |  16KB  |  426 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                      H. Alvestrand
  8. Request for Comments: 1502                                  SINTEF DELAB
  9.                                                              August 1993
  10.  
  11.  
  12.                   X.400 Use of Extended Character Sets
  13.  
  14. Status of this Memo
  15.  
  16.    This RFC specifies an IAB standards track protocol for the Internet
  17.    community, and requests discussion and suggestions for improvements.
  18.    Please refer to the current edition of the "IAB Official Protocol
  19.    Standards" for the standardization state and status of this protocol.
  20.    Distribution of this memo is unlimited.
  21.  
  22. 1.  Introduction
  23.  
  24.    Since 1988, X.400 has had the capacity for carrying a large number of
  25.    different character sets in a message by using the body part
  26.    "GeneralText" defined by ISO/IEC 10021-7.
  27.  
  28.    Since 1992, the Internet also has the means of passing around
  29.    messages containing multiple character sets, by using the mechanism
  30.    defined in RFC-MIME.
  31.  
  32.    This RFC defines a suggested method of using "GeneralText" in order
  33.    to harmonize as much as possible the usage of this body part.
  34.  
  35. 2.  General principles
  36.  
  37. 2.1.  Goals
  38.  
  39.    The target of this memo is to define a way of using existing
  40.    standards to achieve:
  41.  
  42.     (1)  in the short term, a standard for sending E-mail in the
  43.          European languages (Latin letters with European accents,
  44.          Greek and Cyrillic)
  45.  
  46.     (2)  in the medium term, extending this to cover the Hebrew and
  47.          Arabic character sets
  48.  
  49.     (3)  in the long term, opening up true international E-mail by
  50.          allowing the full character set specified in ISO-10646 to be
  51.          used.
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Alvestrand                                                      [Page 1]
  59.  
  60. RFC 1502          X.400 Use of Extended Character Sets       August 1993
  61.  
  62.  
  63.    The author believes that this document gives a specification that can
  64.    easily accomodate the use of any character set in the ISO registry,
  65.    and, by giving guidance rules for choosing character sets, will help
  66.    interworking.
  67.  
  68. 2.2.  Families of character sets
  69.  
  70. 2.2.1.  ISO 6937/T.61
  71.  
  72.    ISO 6937 is a code technique used and recommended in T.51 and T.101
  73.    (Teletex and Videotex service) and in X.500, providing a repertoire
  74.    of 333 characters from the Latin script by use of non- spacing
  75.    diacritical marks. It corresponds closely to CCITT recommendation
  76.    T.61.
  77.  
  78.    The problem with that technique is that the character stream comes in
  79.    two modes, i.e., some characters are coded with one byte and some
  80.    with two (composite characters). This makes information processing
  81.    systems such as an E-mail UA or GW more complex.
  82.  
  83.    It is also not extensible to other languages like Korean or Chinese,
  84.    or even Greek, without invoking the character set switching
  85.    techniques of ISO 2022.
  86.  
  87. 2.2.2.  ISO 8859
  88.  
  89.    ISO 8859 defines a set of character sets, each suitable for use in
  90.    some group of languages. Each character in ISO 8859 is coded in a
  91.    single byte.
  92.  
  93.    There are currently 11 parts of ISO 8859, plus a "supplementary" set,
  94.    registered as ISO IR 154. Most languages using single-byte characters
  95.    can be written in one or another of the ISO 8859 sets.  There are
  96.    sets covering Greek, Hebrew and Arabic, but there is still
  97.    controversy over the problem of the rendering direction for Hebrew
  98.    and Arabic.
  99.  
  100.    All the ISO 8859 sets include US-ASCII as a subset. All use 8 bits.
  101.  
  102.    ISO 8859 is regarded by many as a solution; for instance, the X
  103.    windows system now comes with ISO-8859-1 as the "standard" character
  104.    set, with the possibility of specifying others. But since the same
  105.    applications often do not support character set switching within
  106.    text, it is problematic to use these in a truly multilingual
  107.    environment.  (Also, most fonts claiming to be "ISO- 8859-1" in X11R5
  108.    are actually 7-bit fonts. The implied lie is very unfortunate.)
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Alvestrand                                                      [Page 2]
  115.  
  116. RFC 1502          X.400 Use of Extended Character Sets       August 1993
  117.  
  118.  
  119.    It turns out to work fine, however, if the second language is
  120.    English, since this can be written in all ISO 8859 sets.
  121.  
  122.    The parts 3 and 4 have not seen wide acceptance, and it is expected
  123.    that they will be discarded. They should therefore not be used.
  124.  
  125.    Note that an ISO 8859 set is actually 2 sets in the ISO sense: US-
  126.    ASCII in the G0 set and another character set in the G1 set.  The
  127.    overloading of the word "character set" is unfortunate, but
  128.    traditional.
  129.  
  130. 2.2.3.  ISO 10646
  131.  
  132.    At the moment of writing, ISO 10646 has just been accepted as an
  133.    International Standard. It is basically a 32-bit character set, with
  134.    all of the currently used characters being numbered by the first 16
  135.    bits, leaving some room for expansion.
  136.  
  137.    It is not possible to use ISO 10646 as a normal character set,
  138.    because it does not conform to the rules for usage of byte values set
  139.    down in ISO 2022 and other places; it uses the "control space" for
  140.    (parts of) graphic character codes.
  141.  
  142.    There are a number of ways to encode ISO 10646 characters "on the
  143.    wire". There are methods within the ISO 2022 standard to switch to
  144.    these, either as "other coding system without return" or as "other
  145.    coding system with return" (that is, you can go back from it to the
  146.    one you came from using an ISO 2022 escape sequence).
  147.  
  148.    The following registrations have been made:
  149.  
  150.     ISO 10646 UCS-2 Level 1 has been registered with ESC 2/5 2/15 4/0,
  151.     ISO 10646 UCS-4 Level 1 has been registered with ESC 2/5 2/15 4/1,
  152.  
  153.    The following are applied for:
  154.  
  155.     Reg# Escape sequence  Standard/Sponsor   Description
  156.     174  ESC 2/5 2/15 F   ISO/IEC 10646      UCS-2, Level 2
  157.     175  ESC 2/5 2/15 F   ISO/IEC 10646      UCS-4, Level 2
  158.     176  ESC 2/5 2/15 F   ISO/IEC 10646      UCS-2, Level 3
  159.     177  ESC 2/5 2/15 F   ISO/IEC 10646      UCS-4, Level 3
  160.     178  ESC 2/5 F        ISO/IEC 10646      UTF-1
  161.  
  162.     << NOTE: The registration numbers for UCS-2 level 1 and UCS-4
  163.     level 1 are not known. Neither are the assigned final characters
  164.     for the other sets. Information requested!>>
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Alvestrand                                                      [Page 3]
  171.  
  172. RFC 1502          X.400 Use of Extended Character Sets       August 1993
  173.  
  174.  
  175.    This character set will become very important in the future, but at
  176.    the moment, few systems are able to support this directly.
  177.  
  178.    The GeneralText body part can be used for carrying any of these
  179.    character sets.
  180.  
  181. 2.3.  Body parts that can be used in X.400
  182.  
  183.    At the moment, no established way of transferring a full set of
  184.    characters in X.400-based E-mail exists.  In the future, it is likely
  185.    that a new body part, based in ISO 10646, will be available, or
  186.    GeneralText may be able to use ISO 10646, but this matter has not yet
  187.    been clarified.
  188.  
  189.    In the short term, the deployed and available body parts are:
  190.  
  191.     (1)  IA5Text
  192.  
  193.     (2)  For X.400/84: ISO6937Text and Teletex
  194.  
  195.     (3)  For X.400/88: GeneralText
  196.  
  197.    IA5Text is the method of choice for E-mail that contains only
  198.    characters from IA5 (equivalent to US-ASCII).
  199.  
  200.    The ISO6937Text body part is defined in the ISO DIS documents
  201.    corresponding to X.400(84) [10]; these never became a standard, so
  202.    they are now quite difficult to find. It is in principle limited to
  203.    using text that can be presented in ISO 6937, but since ISO 6937
  204.    refers to the ISO 2022 method of changing character sets, it is
  205.    theoretically possible to use any ISO registered character set, but
  206.    there is no facility for announcing the character sets used. This
  207.    makes interworking with equipment that does not support the same
  208.    character sets complex.
  209.  
  210.    It is still, however, the only body part suitable for carrying non-
  211.    paginated text in non-basic character sets in X.400(84).
  212.  
  213.    Teletex, which is identical in all versions of the X.400 standard,
  214.    has the same problem of implicit ISO6937, but has the added problem
  215.    that it also specifies a page format, with, for instance, a left
  216.    margin of 5 character positions. This is often not desirable.
  217.  
  218.    The details of Teletex are specified in recommendation T.51 and its
  219.    relatives.
  220.  
  221.    GeneralText is defined in ISO 10021-8, the part of [9] that
  222.    corresponds to CCITT recommendation [11]. It is an Extended body
  223.  
  224.  
  225.  
  226. Alvestrand                                                      [Page 4]
  227.  
  228. RFC 1502          X.400 Use of Extended Character Sets       August 1993
  229.  
  230.  
  231.    part, so no modification to CCITT implementations is needed to carry
  232.    it.
  233.  
  234.    GeneralText is suitable for interchange, since it has got proper
  235.    announcement facilities. It can use any number of character sets, and
  236.    announces them both in the Encoded Information Types of the X.400
  237.    envelope and the parameters of the body part.
  238.  
  239.    We recommend this body part for carrying unformatted text in
  240.    X.400/88.
  241.  
  242. 3.  GUIDELINES FOR THE GENERATION OF GENERALTEXT
  243.  
  244. 3.1.  Formal definition of GeneralText
  245.  
  246.    A GeneralText message is a byte stream that contains characters and
  247.    character switching sequences according to [12].
  248.  
  249.    The X.400 ASN.1 definition of the GeneralText body part is:
  250.  
  251.     general-text-body-part EXTENDED-BODY-PART-TYPE
  252.         PARAMETERS GeneralTextParameters IDENTIFIED BY id-ep-general-text
  253.         DATA       GeneralTextData
  254.         ::= id-et-general-text
  255.  
  256.     GeneralTextParameters ::= SET OF CharacterSetRegistration
  257.  
  258.     CharacterSetRegistration ::= INTEGER (1..32767)
  259.  
  260.     GeneralTextData ::= GeneralString
  261.  
  262.    The definition is from ISO/IEC 10021-7 [9], Annex I, with
  263.    modifications made in the MHS Implementor' Guide, version 8, chapter
  264.    3.6.3, bullet F130. It does not appear in the CCITT version of the
  265.    standards.
  266.  
  267. 3.2.  Brief description of ISO 2022 character set switching
  268.  
  269.    There are 4 graphic character sets active at any time in a
  270.    GeneralText message, called G0, G1, G2 and G3. In addition, there are
  271.    2 control character sets, called C0 and C1.
  272.  
  273.    At any moment, one of the sets G0-G3 is active in code positions 2/1
  274.    to 7/14, and another is active in code positions 10/0 to 15/15. The
  275.    setting is achieved by so-called "locking shift" sequences.
  276.  
  277.    (Formally, code positions 2/0 and 7/15 are reserved for "space" and
  278.    "DEL" respectively, and only 94-character character sets can be used
  279.  
  280.  
  281.  
  282. Alvestrand                                                      [Page 5]
  283.  
  284. RFC 1502          X.400 Use of Extended Character Sets       August 1993
  285.  
  286.  
  287.    in G0. In practice, this restriction is sometimes ignored)
  288.  
  289.    Single characters from the non-active sets may be invoked by the use
  290.    of "single shift" sequences.
  291.  
  292.    The control character sets always occupy the code positions 0/0 to
  293.    1/15 (C0) and 8/0 to 9/15 (C1).
  294.  
  295.    The character sets currently active as G0-G3 and C0-C1 may be changed
  296.    using "character set designating sequences".
  297.  
  298.    At the beginning of a GeneralText message, one must always assume
  299.    that set 2 (IA5) is active as G0, shifted into the lower half, that
  300.    set 1 (standard) is active as C0, and that no G1-G3 or C1 set is
  301.    invoked. This is specified in the definition of "GeneralString" in
  302.    [5], the definition of ASN.1 encoding (section 23.5.2).
  303.  
  304.    If this is not a suitable initial state, a message must always start
  305.    with the necessary announcers and escape sequences to designate and
  306.    invoke the character sets that are actually used.  The character sets
  307.    in use may be changed later in the message by use of escape
  308.    sequences.
  309.  
  310.    The parameters of a GeneralText message always list all the character
  311.    sets used, by quoting their ISO reference numbers.
  312.  
  313.    It is impossible to use a character set not registered with ISO in a
  314.    GeneralText message.
  315.  
  316.    It is also impossible to decide on the true meaning of a byte in a
  317.    GeneralText message without scanning the whole message for shift and
  318.    escape sequences.
  319.  
  320. 3.3.  How to use the character sets
  321.  
  322.    RECOMMENDATION:
  323.  
  324.    When the text to be rendered is representable in one of the character
  325.    sets of ISO-8859, the G0 set should be set to ISO 646 International
  326.    Reference Version (1991), also called US-ASCII, ISO-IR-6.
  327.  
  328.    The older character set ISO-IR-2, ISO 646 IRV(1983), should NOT be
  329.    used.  This means that the escape sequence ESC 2/8 4/2 (designating
  330.    US-ASCII as G0) should always occur at the beginning of the message.
  331.  
  332.    The G1 set should be set to the character set identified by the
  333.    relevant ISO-8859 part. G2 and G3 are not used.
  334.  
  335.  
  336.  
  337.  
  338. Alvestrand                                                      [Page 6]
  339.  
  340. RFC 1502          X.400 Use of Extended Character Sets       August 1993
  341.  
  342.  
  343.    This corresponds to the first level of ISO 4873 usage.
  344.  
  345.    For the currently defined parts of ISO 8859, the character set
  346.    designations for the G1 set are (relative to ISO 8859:1987):
  347.  
  348.     Part    ISO IR name             Escape sequence Remarks
  349.                                     for G1 use
  350.  
  351.     1       ISO-IR-100              Esc 2D 41    West Europe (Latin-1)
  352.     2       ISO-IR-101              Esc 2D 42    East European (Latin-2)
  353.     3       ISO-IR-109              Esc 2D 43    (Latin-3)
  354.     4       ISO-IR-110              Esc 2D 44    (Latin-4)
  355.     5       ISO-IR-144              Esc 2D 4C    Cyrillic
  356.     6       ISO-IR-127              Esc 2D 47    Arabic
  357.     7       ISO-IR-126              Esc 2D 46    Greek
  358.     8       ISO-IR-138              Esc 2D 48    Hebrew
  359.     9       ISO-IR-148              Esc 2D 4D    Turkish (Latin-5)
  360.     10      ISO-IR-157              Not listed   Sami (Latin-6)
  361.  
  362.    The escape sequence for 8859-10 (Latin-6) is not listed in RFC 1345.
  363.  
  364.    NOTE: The use of ISO 8859-3 and ISO 8859-4 is NOT recommended if
  365.    other possibilities exist.
  366.  
  367.    NOTE: There is a debate about the Arabic and Hebrew character sets.
  368.    These languages are normally read right to left, but encodings have
  369.    been done in both "visual" (left to right) and "phonetic" (right to
  370.    left) ordering, there is significant disagreement about what the
  371.    "right" way to do it is, and the character sets mentioned do not
  372.    specify it. So, one should be careful not to use these character sets
  373.    until a standard is agreed upon, or the result will probably be
  374.    unreadable (siht ekil).
  375.  
  376.    (Note that there is some confusion as to what parts are actually
  377.    standardized; the Norwegian standards institute reports that only
  378.    part 1, 2, 3, 4, 6, 7 and 8 are currently standards. Other reports
  379.    claim that both 8859-10 and 8859-11 are standards, and I definitely
  380.    think that 8859-9 is.)
  381.  
  382.    NOTE: ISO has not ruled out the possibility of changing the ISO 8859
  383.    standard. This would involve changing the registry information in
  384.    this table, so this should be assumed valid for ISO 8859 versions
  385.    that are current in 1993.
  386.  
  387.    The G1 set should be permanently shifted into the upper half of the
  388.    code page.
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Alvestrand                                                      [Page 7]
  395.  
  396. RFC 1502          X.400 Use of Extended Character Sets       August 1993
  397.  
  398.  
  399.    When the text is not representable in one of the ISO-8859 character
  400.    sets, the following rules may be applied:
  401.  
  402.     (1)  If any Latin characters are used, keep IA5 as the G0 set.
  403.  
  404.     (2)  If a mainstream character set is used (Greek, Cyrillic,
  405.          Hebrew, Arabic), designate this as the G1 character set,
  406.          and permanently shift this into the upper half of the code
  407.          page (LS1R).
  408.          EXCEPTION: The Japanese community has a long tradition of
  409.          switching between the Japanese 16-bit character set
  410.          ISO-IR-87 and US-ASCII as the G0 set. See [7]
  411.          for details. If ISO-IR-87 is used, that technique should be
  412.          used instead of the one recommended here.
  413.  
  414.     (3)  If occasional extensions to a character set that is
  415.          basically Latin occur (like accents, national variants
  416.          and so on), and these are available in a single character
  417.          set, designate the relevant set as G2 and use single
  418.          shift (SS2) to invoke characters from this character set.
  419.  
  420.          The ISO 8859 supplementary set, ISO-IR-154, is recommended
  421.          for this purpose.
  422.  
  423.          This corresponds to the ISO 4873 "second level" application.
  424.  
  425.     (4)  If two non-Latin character sets are used, the second should
  426.          be